type mur = Geo.segment
type sexe = Male | Femelle
type espece = Chat | Souris of souris
and souris = Sa of sexe * bool | Sf of int * bool | So of sexe * int
type animal = { p : Geo.point; pvis : float; ract : float; esp : espece; }
type visibilite = Rien | A of animal
val continue : bool ref
val create_liste_surface_animaux : animal list -> Geo.surface list
val murtosurface : mur -> Geo.surface
val create_liste_surface_murs : mur list -> Geo.surface list
val liste_animaux : animal list ref
val liste_murs : mur list ref
val liste_surface : Geo.surface list ref
val mvon : Geo.point -> Geo.point
val destination : animal -> Geo.point
val modifsphere : animal list -> animal list
val croise : animal -> Geo.point -> mur -> bool
val longe : animal -> Geo.point -> mur -> Geo.point
val aportevu : animal -> animal -> bool
val estvisible : animal -> animal -> mur -> bool
val proie : animal -> animal list -> mur -> visibilite
val fuite : animal -> animal -> mur -> Geo.point
val poursuite : animal -> animal -> mur -> Geo.point
val copule : animal -> animal -> mur -> Geo.point * animal * animal
val naissance : animal -> animal list
val chatVisible : animal -> animal list -> mur -> visibilite
val sexeOppVisible : animal -> animal list -> mur -> visibilite
val prioSouris : animal -> animal list -> mur -> visibilite
val egal : animal -> animal -> bool
val modifSouris : animal -> animal -> animal list -> animal list
val suppr1Souris : animal -> animal list -> animal list
val modifpleinair : animal list -> mur list -> animal list
val addCat : unit -> animal
val addMouse : unit -> animal
val vertex : Geo.point -> unit
val translate : Geo.point -> unit
val scale : float -> unit
val protect : (unit -> 'a) -> (unit -> 'b) -> 'b
val mat : (unit -> 'a) -> unit
val render : GlDraw.shape -> (unit -> 'a) -> unit
val circle : float -> Geo.point
val display_surface : Geo.surface -> unit
val display : unit -> unit
val idleS : unit -> unit
val idleP : unit -> unit
val handle_key : int -> unit
val create_window : int -> int -> string -> unit
val set_cb : (unit -> unit) -> (unit -> 'a) -> (int -> unit) -> unit
val sphere : unit -> unit
val plein_air : unit -> unit
